// Copyright (C) 2017 Robin Templeton. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-multiplicative-operators-runtime-semantics-evaluation
description: BigInt division arithmetic
features: [BigInt]
---*/
assert.sameValue(
  0xFEDCBA9876543210n / 0xFEDCBA9876543210n,
  0x1n,
  'The result of (0xFEDCBA9876543210n / 0xFEDCBA9876543210n) is 0x1n'
);

assert.sameValue(
  0xFEDCBA9876543210n / 0xFEDCBA987654320Fn,
  0x1n,
  'The result of (0xFEDCBA9876543210n / 0xFEDCBA987654320Fn) is 0x1n'
);

assert.sameValue(
  0xFEDCBA9876543210n / 0xFEDCBA98n,
  0x100000000n,
  'The result of (0xFEDCBA9876543210n / 0xFEDCBA98n) is 0x100000000n'
);

assert.sameValue(
  0xFEDCBA9876543210n / 0xFEDCBA97n,
  0x100000001n,
  'The result of (0xFEDCBA9876543210n / 0xFEDCBA97n) is 0x100000001n'
);

assert.sameValue(
  0xFEDCBA9876543210n / 0x1234n,
  0xE0042813BE5DCn,
  'The result of (0xFEDCBA9876543210n / 0x1234n) is 0xE0042813BE5DCn'
);

assert.sameValue(
  0xFEDCBA9876543210n / 0x3n,
  0x54F43E32D21C10B0n,
  'The result of (0xFEDCBA9876543210n / 0x3n) is 0x54F43E32D21C10B0n'
);

assert.sameValue(
  0xFEDCBA9876543210n / 0x2n,
  0x7F6E5D4C3B2A1908n,
  'The result of (0xFEDCBA9876543210n / 0x2n) is 0x7F6E5D4C3B2A1908n'
);

assert.sameValue(
  0xFEDCBA9876543210n / 0x1n,
  0xFEDCBA9876543210n,
  'The result of (0xFEDCBA9876543210n / 0x1n) is 0xFEDCBA9876543210n'
);

assert.sameValue(
  0xFEDCBA9876543210n / -0x1n,
  -0xFEDCBA9876543210n,
  'The result of (0xFEDCBA9876543210n / -0x1n) is -0xFEDCBA9876543210n'
);

assert.sameValue(
  0xFEDCBA9876543210n / -0x2n,
  -0x7F6E5D4C3B2A1908n,
  'The result of (0xFEDCBA9876543210n / -0x2n) is -0x7F6E5D4C3B2A1908n'
);

assert.sameValue(
  0xFEDCBA9876543210n / -0x3n,
  -0x54F43E32D21C10B0n,
  'The result of (0xFEDCBA9876543210n / -0x3n) is -0x54F43E32D21C10B0n'
);

assert.sameValue(
  0xFEDCBA9876543210n / -0x1234n,
  -0xE0042813BE5DCn,
  'The result of (0xFEDCBA9876543210n / -0x1234n) is -0xE0042813BE5DCn'
);

assert.sameValue(
  0xFEDCBA9876543210n / -0xFEDCBA97n,
  -0x100000001n,
  'The result of (0xFEDCBA9876543210n / -0xFEDCBA97n) is -0x100000001n'
);

assert.sameValue(
  0xFEDCBA9876543210n / -0xFEDCBA98n,
  -0x100000000n,
  'The result of (0xFEDCBA9876543210n / -0xFEDCBA98n) is -0x100000000n'
);

assert.sameValue(
  0xFEDCBA9876543210n / -0xFEDCBA987654320Fn,
  -0x1n,
  'The result of (0xFEDCBA9876543210n / -0xFEDCBA987654320Fn) is -0x1n'
);

assert.sameValue(
  0xFEDCBA9876543210n / -0xFEDCBA9876543210n,
  -0x1n,
  'The result of (0xFEDCBA9876543210n / -0xFEDCBA9876543210n) is -0x1n'
);

assert.sameValue(
  0xFEDCBA987654320Fn / 0xFEDCBA9876543210n,
  0x0n,
  'The result of (0xFEDCBA987654320Fn / 0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  0xFEDCBA987654320Fn / 0xFEDCBA987654320Fn,
  0x1n,
  'The result of (0xFEDCBA987654320Fn / 0xFEDCBA987654320Fn) is 0x1n'
);

assert.sameValue(
  0xFEDCBA987654320Fn / 0xFEDCBA98n,
  0x100000000n,
  'The result of (0xFEDCBA987654320Fn / 0xFEDCBA98n) is 0x100000000n'
);

assert.sameValue(
  0xFEDCBA987654320Fn / 0xFEDCBA97n,
  0x100000001n,
  'The result of (0xFEDCBA987654320Fn / 0xFEDCBA97n) is 0x100000001n'
);

assert.sameValue(
  0xFEDCBA987654320Fn / 0x1234n,
  0xE0042813BE5DCn,
  'The result of (0xFEDCBA987654320Fn / 0x1234n) is 0xE0042813BE5DCn'
);

assert.sameValue(
  0xFEDCBA987654320Fn / 0x3n,
  0x54F43E32D21C10AFn,
  'The result of (0xFEDCBA987654320Fn / 0x3n) is 0x54F43E32D21C10AFn'
);

assert.sameValue(
  0xFEDCBA987654320Fn / 0x2n,
  0x7F6E5D4C3B2A1907n,
  'The result of (0xFEDCBA987654320Fn / 0x2n) is 0x7F6E5D4C3B2A1907n'
);

assert.sameValue(
  0xFEDCBA987654320Fn / 0x1n,
  0xFEDCBA987654320Fn,
  'The result of (0xFEDCBA987654320Fn / 0x1n) is 0xFEDCBA987654320Fn'
);

assert.sameValue(
  0xFEDCBA987654320Fn / -0x1n,
  -0xFEDCBA987654320Fn,
  'The result of (0xFEDCBA987654320Fn / -0x1n) is -0xFEDCBA987654320Fn'
);

assert.sameValue(
  0xFEDCBA987654320Fn / -0x2n,
  -0x7F6E5D4C3B2A1907n,
  'The result of (0xFEDCBA987654320Fn / -0x2n) is -0x7F6E5D4C3B2A1907n'
);

assert.sameValue(
  0xFEDCBA987654320Fn / -0x3n,
  -0x54F43E32D21C10AFn,
  'The result of (0xFEDCBA987654320Fn / -0x3n) is -0x54F43E32D21C10AFn'
);

assert.sameValue(
  0xFEDCBA987654320Fn / -0x1234n,
  -0xE0042813BE5DCn,
  'The result of (0xFEDCBA987654320Fn / -0x1234n) is -0xE0042813BE5DCn'
);

assert.sameValue(
  0xFEDCBA987654320Fn / -0xFEDCBA97n,
  -0x100000001n,
  'The result of (0xFEDCBA987654320Fn / -0xFEDCBA97n) is -0x100000001n'
);

assert.sameValue(
  0xFEDCBA987654320Fn / -0xFEDCBA98n,
  -0x100000000n,
  'The result of (0xFEDCBA987654320Fn / -0xFEDCBA98n) is -0x100000000n'
);

assert.sameValue(
  0xFEDCBA987654320Fn / -0xFEDCBA987654320Fn,
  -0x1n,
  'The result of (0xFEDCBA987654320Fn / -0xFEDCBA987654320Fn) is -0x1n'
);

assert.sameValue(
  0xFEDCBA987654320Fn / -0xFEDCBA9876543210n,
  0x0n,
  'The result of (0xFEDCBA987654320Fn / -0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  0xFEDCBA98n / 0xFEDCBA9876543210n,
  0x0n,
  'The result of (0xFEDCBA98n / 0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  0xFEDCBA98n / 0xFEDCBA987654320Fn,
  0x0n,
  'The result of (0xFEDCBA98n / 0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(
  0xFEDCBA98n / 0xFEDCBA98n,
  0x1n,
  'The result of (0xFEDCBA98n / 0xFEDCBA98n) is 0x1n'
);

assert.sameValue(
  0xFEDCBA98n / 0xFEDCBA97n,
  0x1n,
  'The result of (0xFEDCBA98n / 0xFEDCBA97n) is 0x1n'
);

assert.sameValue(
  0xFEDCBA98n / 0x1234n,
  0xE0042n,
  'The result of (0xFEDCBA98n / 0x1234n) is 0xE0042n'
);

assert.sameValue(
  0xFEDCBA98n / 0x3n,
  0x54F43E32n,
  'The result of (0xFEDCBA98n / 0x3n) is 0x54F43E32n'
);

assert.sameValue(
  0xFEDCBA98n / 0x2n,
  0x7F6E5D4Cn,
  'The result of (0xFEDCBA98n / 0x2n) is 0x7F6E5D4Cn'
);

assert.sameValue(
  0xFEDCBA98n / 0x1n,
  0xFEDCBA98n,
  'The result of (0xFEDCBA98n / 0x1n) is 0xFEDCBA98n'
);

assert.sameValue(
  0xFEDCBA98n / -0x1n,
  -0xFEDCBA98n,
  'The result of (0xFEDCBA98n / -0x1n) is -0xFEDCBA98n'
);

assert.sameValue(
  0xFEDCBA98n / -0x2n,
  -0x7F6E5D4Cn,
  'The result of (0xFEDCBA98n / -0x2n) is -0x7F6E5D4Cn'
);

assert.sameValue(
  0xFEDCBA98n / -0x3n,
  -0x54F43E32n,
  'The result of (0xFEDCBA98n / -0x3n) is -0x54F43E32n'
);

assert.sameValue(
  0xFEDCBA98n / -0x1234n,
  -0xE0042n,
  'The result of (0xFEDCBA98n / -0x1234n) is -0xE0042n'
);

assert.sameValue(
  0xFEDCBA98n / -0xFEDCBA97n,
  -0x1n,
  'The result of (0xFEDCBA98n / -0xFEDCBA97n) is -0x1n'
);

assert.sameValue(
  0xFEDCBA98n / -0xFEDCBA98n,
  -0x1n,
  'The result of (0xFEDCBA98n / -0xFEDCBA98n) is -0x1n'
);

assert.sameValue(
  0xFEDCBA98n / -0xFEDCBA987654320Fn,
  0x0n,
  'The result of (0xFEDCBA98n / -0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(
  0xFEDCBA98n / -0xFEDCBA9876543210n,
  0x0n,
  'The result of (0xFEDCBA98n / -0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  0xFEDCBA97n / 0xFEDCBA9876543210n,
  0x0n,
  'The result of (0xFEDCBA97n / 0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  0xFEDCBA97n / 0xFEDCBA987654320Fn,
  0x0n,
  'The result of (0xFEDCBA97n / 0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(
  0xFEDCBA97n / 0xFEDCBA98n,
  0x0n,
  'The result of (0xFEDCBA97n / 0xFEDCBA98n) is 0x0n'
);

assert.sameValue(
  0xFEDCBA97n / 0xFEDCBA97n,
  0x1n,
  'The result of (0xFEDCBA97n / 0xFEDCBA97n) is 0x1n'
);

assert.sameValue(
  0xFEDCBA97n / 0x1234n,
  0xE0042n,
  'The result of (0xFEDCBA97n / 0x1234n) is 0xE0042n'
);

assert.sameValue(
  0xFEDCBA97n / 0x3n,
  0x54F43E32n,
  'The result of (0xFEDCBA97n / 0x3n) is 0x54F43E32n'
);

assert.sameValue(
  0xFEDCBA97n / 0x2n,
  0x7F6E5D4Bn,
  'The result of (0xFEDCBA97n / 0x2n) is 0x7F6E5D4Bn'
);

assert.sameValue(
  0xFEDCBA97n / 0x1n,
  0xFEDCBA97n,
  'The result of (0xFEDCBA97n / 0x1n) is 0xFEDCBA97n'
);

assert.sameValue(
  0xFEDCBA97n / -0x1n,
  -0xFEDCBA97n,
  'The result of (0xFEDCBA97n / -0x1n) is -0xFEDCBA97n'
);

assert.sameValue(
  0xFEDCBA97n / -0x2n,
  -0x7F6E5D4Bn,
  'The result of (0xFEDCBA97n / -0x2n) is -0x7F6E5D4Bn'
);

assert.sameValue(
  0xFEDCBA97n / -0x3n,
  -0x54F43E32n,
  'The result of (0xFEDCBA97n / -0x3n) is -0x54F43E32n'
);

assert.sameValue(
  0xFEDCBA97n / -0x1234n,
  -0xE0042n,
  'The result of (0xFEDCBA97n / -0x1234n) is -0xE0042n'
);

assert.sameValue(
  0xFEDCBA97n / -0xFEDCBA97n,
  -0x1n,
  'The result of (0xFEDCBA97n / -0xFEDCBA97n) is -0x1n'
);

assert.sameValue(
  0xFEDCBA97n / -0xFEDCBA98n,
  0x0n,
  'The result of (0xFEDCBA97n / -0xFEDCBA98n) is 0x0n'
);

assert.sameValue(
  0xFEDCBA97n / -0xFEDCBA987654320Fn,
  0x0n,
  'The result of (0xFEDCBA97n / -0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(
  0xFEDCBA97n / -0xFEDCBA9876543210n,
  0x0n,
  'The result of (0xFEDCBA97n / -0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  0x1234n / 0xFEDCBA9876543210n,
  0x0n,
  'The result of (0x1234n / 0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  0x1234n / 0xFEDCBA987654320Fn,
  0x0n,
  'The result of (0x1234n / 0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(0x1234n / 0xFEDCBA98n, 0x0n, 'The result of (0x1234n / 0xFEDCBA98n) is 0x0n');
assert.sameValue(0x1234n / 0xFEDCBA97n, 0x0n, 'The result of (0x1234n / 0xFEDCBA97n) is 0x0n');
assert.sameValue(0x1234n / 0x1234n, 0x1n, 'The result of (0x1234n / 0x1234n) is 0x1n');
assert.sameValue(0x1234n / 0x3n, 0x611n, 'The result of (0x1234n / 0x3n) is 0x611n');
assert.sameValue(0x1234n / 0x2n, 0x91An, 'The result of (0x1234n / 0x2n) is 0x91An');
assert.sameValue(0x1234n / 0x1n, 0x1234n, 'The result of (0x1234n / 0x1n) is 0x1234n');
assert.sameValue(0x1234n / -0x1n, -0x1234n, 'The result of (0x1234n / -0x1n) is -0x1234n');
assert.sameValue(0x1234n / -0x2n, -0x91An, 'The result of (0x1234n / -0x2n) is -0x91An');
assert.sameValue(0x1234n / -0x3n, -0x611n, 'The result of (0x1234n / -0x3n) is -0x611n');
assert.sameValue(0x1234n / -0x1234n, -0x1n, 'The result of (0x1234n / -0x1234n) is -0x1n');
assert.sameValue(0x1234n / -0xFEDCBA97n, 0x0n, 'The result of (0x1234n / -0xFEDCBA97n) is 0x0n');
assert.sameValue(0x1234n / -0xFEDCBA98n, 0x0n, 'The result of (0x1234n / -0xFEDCBA98n) is 0x0n');

assert.sameValue(
  0x1234n / -0xFEDCBA987654320Fn,
  0x0n,
  'The result of (0x1234n / -0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(
  0x1234n / -0xFEDCBA9876543210n,
  0x0n,
  'The result of (0x1234n / -0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  0x3n / 0xFEDCBA9876543210n,
  0x0n,
  'The result of (0x3n / 0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  0x3n / 0xFEDCBA987654320Fn,
  0x0n,
  'The result of (0x3n / 0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(0x3n / 0xFEDCBA98n, 0x0n, 'The result of (0x3n / 0xFEDCBA98n) is 0x0n');
assert.sameValue(0x3n / 0xFEDCBA97n, 0x0n, 'The result of (0x3n / 0xFEDCBA97n) is 0x0n');
assert.sameValue(0x3n / 0x1234n, 0x0n, 'The result of (0x3n / 0x1234n) is 0x0n');
assert.sameValue(0x3n / 0x3n, 0x1n, 'The result of (0x3n / 0x3n) is 0x1n');
assert.sameValue(0x3n / 0x2n, 0x1n, 'The result of (0x3n / 0x2n) is 0x1n');
assert.sameValue(0x3n / 0x1n, 0x3n, 'The result of (0x3n / 0x1n) is 0x3n');
assert.sameValue(0x3n / -0x1n, -0x3n, 'The result of (0x3n / -0x1n) is -0x3n');
assert.sameValue(0x3n / -0x2n, -0x1n, 'The result of (0x3n / -0x2n) is -0x1n');
assert.sameValue(0x3n / -0x3n, -0x1n, 'The result of (0x3n / -0x3n) is -0x1n');
assert.sameValue(0x3n / -0x1234n, 0x0n, 'The result of (0x3n / -0x1234n) is 0x0n');
assert.sameValue(0x3n / -0xFEDCBA97n, 0x0n, 'The result of (0x3n / -0xFEDCBA97n) is 0x0n');
assert.sameValue(0x3n / -0xFEDCBA98n, 0x0n, 'The result of (0x3n / -0xFEDCBA98n) is 0x0n');

assert.sameValue(
  0x3n / -0xFEDCBA987654320Fn,
  0x0n,
  'The result of (0x3n / -0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(
  0x3n / -0xFEDCBA9876543210n,
  0x0n,
  'The result of (0x3n / -0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  0x2n / 0xFEDCBA9876543210n,
  0x0n,
  'The result of (0x2n / 0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  0x2n / 0xFEDCBA987654320Fn,
  0x0n,
  'The result of (0x2n / 0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(0x2n / 0xFEDCBA98n, 0x0n, 'The result of (0x2n / 0xFEDCBA98n) is 0x0n');
assert.sameValue(0x2n / 0xFEDCBA97n, 0x0n, 'The result of (0x2n / 0xFEDCBA97n) is 0x0n');
assert.sameValue(0x2n / 0x1234n, 0x0n, 'The result of (0x2n / 0x1234n) is 0x0n');
assert.sameValue(0x2n / 0x3n, 0x0n, 'The result of (0x2n / 0x3n) is 0x0n');
assert.sameValue(0x2n / 0x2n, 0x1n, 'The result of (0x2n / 0x2n) is 0x1n');
assert.sameValue(0x2n / 0x1n, 0x2n, 'The result of (0x2n / 0x1n) is 0x2n');
assert.sameValue(0x2n / -0x1n, -0x2n, 'The result of (0x2n / -0x1n) is -0x2n');
assert.sameValue(0x2n / -0x2n, -0x1n, 'The result of (0x2n / -0x2n) is -0x1n');
assert.sameValue(0x2n / -0x3n, 0x0n, 'The result of (0x2n / -0x3n) is 0x0n');
assert.sameValue(0x2n / -0x1234n, 0x0n, 'The result of (0x2n / -0x1234n) is 0x0n');
assert.sameValue(0x2n / -0xFEDCBA97n, 0x0n, 'The result of (0x2n / -0xFEDCBA97n) is 0x0n');
assert.sameValue(0x2n / -0xFEDCBA98n, 0x0n, 'The result of (0x2n / -0xFEDCBA98n) is 0x0n');

assert.sameValue(
  0x2n / -0xFEDCBA987654320Fn,
  0x0n,
  'The result of (0x2n / -0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(
  0x2n / -0xFEDCBA9876543210n,
  0x0n,
  'The result of (0x2n / -0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  0x1n / 0xFEDCBA9876543210n,
  0x0n,
  'The result of (0x1n / 0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  0x1n / 0xFEDCBA987654320Fn,
  0x0n,
  'The result of (0x1n / 0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(0x1n / 0xFEDCBA98n, 0x0n, 'The result of (0x1n / 0xFEDCBA98n) is 0x0n');
assert.sameValue(0x1n / 0xFEDCBA97n, 0x0n, 'The result of (0x1n / 0xFEDCBA97n) is 0x0n');
assert.sameValue(0x1n / 0x1234n, 0x0n, 'The result of (0x1n / 0x1234n) is 0x0n');
assert.sameValue(0x1n / 0x3n, 0x0n, 'The result of (0x1n / 0x3n) is 0x0n');
assert.sameValue(0x1n / 0x2n, 0x0n, 'The result of (0x1n / 0x2n) is 0x0n');
assert.sameValue(0x1n / 0x1n, 0x1n, 'The result of (0x1n / 0x1n) is 0x1n');
assert.sameValue(0x1n / -0x1n, -0x1n, 'The result of (0x1n / -0x1n) is -0x1n');
assert.sameValue(0x1n / -0x2n, 0x0n, 'The result of (0x1n / -0x2n) is 0x0n');
assert.sameValue(0x1n / -0x3n, 0x0n, 'The result of (0x1n / -0x3n) is 0x0n');
assert.sameValue(0x1n / -0x1234n, 0x0n, 'The result of (0x1n / -0x1234n) is 0x0n');
assert.sameValue(0x1n / -0xFEDCBA97n, 0x0n, 'The result of (0x1n / -0xFEDCBA97n) is 0x0n');
assert.sameValue(0x1n / -0xFEDCBA98n, 0x0n, 'The result of (0x1n / -0xFEDCBA98n) is 0x0n');

assert.sameValue(
  0x1n / -0xFEDCBA987654320Fn,
  0x0n,
  'The result of (0x1n / -0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(
  0x1n / -0xFEDCBA9876543210n,
  0x0n,
  'The result of (0x1n / -0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  -0x1n / 0xFEDCBA9876543210n,
  0x0n,
  'The result of (-0x1n / 0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  -0x1n / 0xFEDCBA987654320Fn,
  0x0n,
  'The result of (-0x1n / 0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(-0x1n / 0xFEDCBA98n, 0x0n, 'The result of (-0x1n / 0xFEDCBA98n) is 0x0n');
assert.sameValue(-0x1n / 0xFEDCBA97n, 0x0n, 'The result of (-0x1n / 0xFEDCBA97n) is 0x0n');
assert.sameValue(-0x1n / 0x1234n, 0x0n, 'The result of (-0x1n / 0x1234n) is 0x0n');
assert.sameValue(-0x1n / 0x3n, 0x0n, 'The result of (-0x1n / 0x3n) is 0x0n');
assert.sameValue(-0x1n / 0x2n, 0x0n, 'The result of (-0x1n / 0x2n) is 0x0n');
assert.sameValue(-0x1n / 0x1n, -0x1n, 'The result of (-0x1n / 0x1n) is -0x1n');
assert.sameValue(-0x1n / -0x1n, 0x1n, 'The result of (-0x1n / -0x1n) is 0x1n');
assert.sameValue(-0x1n / -0x2n, 0x0n, 'The result of (-0x1n / -0x2n) is 0x0n');
assert.sameValue(-0x1n / -0x3n, 0x0n, 'The result of (-0x1n / -0x3n) is 0x0n');
assert.sameValue(-0x1n / -0x1234n, 0x0n, 'The result of (-0x1n / -0x1234n) is 0x0n');
assert.sameValue(-0x1n / -0xFEDCBA97n, 0x0n, 'The result of (-0x1n / -0xFEDCBA97n) is 0x0n');
assert.sameValue(-0x1n / -0xFEDCBA98n, 0x0n, 'The result of (-0x1n / -0xFEDCBA98n) is 0x0n');

assert.sameValue(
  -0x1n / -0xFEDCBA987654320Fn,
  0x0n,
  'The result of (-0x1n / -0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(
  -0x1n / -0xFEDCBA9876543210n,
  0x0n,
  'The result of (-0x1n / -0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  -0x2n / 0xFEDCBA9876543210n,
  0x0n,
  'The result of (-0x2n / 0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  -0x2n / 0xFEDCBA987654320Fn,
  0x0n,
  'The result of (-0x2n / 0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(-0x2n / 0xFEDCBA98n, 0x0n, 'The result of (-0x2n / 0xFEDCBA98n) is 0x0n');
assert.sameValue(-0x2n / 0xFEDCBA97n, 0x0n, 'The result of (-0x2n / 0xFEDCBA97n) is 0x0n');
assert.sameValue(-0x2n / 0x1234n, 0x0n, 'The result of (-0x2n / 0x1234n) is 0x0n');
assert.sameValue(-0x2n / 0x3n, 0x0n, 'The result of (-0x2n / 0x3n) is 0x0n');
assert.sameValue(-0x2n / 0x2n, -0x1n, 'The result of (-0x2n / 0x2n) is -0x1n');
assert.sameValue(-0x2n / 0x1n, -0x2n, 'The result of (-0x2n / 0x1n) is -0x2n');
assert.sameValue(-0x2n / -0x1n, 0x2n, 'The result of (-0x2n / -0x1n) is 0x2n');
assert.sameValue(-0x2n / -0x2n, 0x1n, 'The result of (-0x2n / -0x2n) is 0x1n');
assert.sameValue(-0x2n / -0x3n, 0x0n, 'The result of (-0x2n / -0x3n) is 0x0n');
assert.sameValue(-0x2n / -0x1234n, 0x0n, 'The result of (-0x2n / -0x1234n) is 0x0n');
assert.sameValue(-0x2n / -0xFEDCBA97n, 0x0n, 'The result of (-0x2n / -0xFEDCBA97n) is 0x0n');
assert.sameValue(-0x2n / -0xFEDCBA98n, 0x0n, 'The result of (-0x2n / -0xFEDCBA98n) is 0x0n');

assert.sameValue(
  -0x2n / -0xFEDCBA987654320Fn,
  0x0n,
  'The result of (-0x2n / -0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(
  -0x2n / -0xFEDCBA9876543210n,
  0x0n,
  'The result of (-0x2n / -0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  -0x3n / 0xFEDCBA9876543210n,
  0x0n,
  'The result of (-0x3n / 0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  -0x3n / 0xFEDCBA987654320Fn,
  0x0n,
  'The result of (-0x3n / 0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(-0x3n / 0xFEDCBA98n, 0x0n, 'The result of (-0x3n / 0xFEDCBA98n) is 0x0n');
assert.sameValue(-0x3n / 0xFEDCBA97n, 0x0n, 'The result of (-0x3n / 0xFEDCBA97n) is 0x0n');
assert.sameValue(-0x3n / 0x1234n, 0x0n, 'The result of (-0x3n / 0x1234n) is 0x0n');
assert.sameValue(-0x3n / 0x3n, -0x1n, 'The result of (-0x3n / 0x3n) is -0x1n');
assert.sameValue(-0x3n / 0x2n, -0x1n, 'The result of (-0x3n / 0x2n) is -0x1n');
assert.sameValue(-0x3n / 0x1n, -0x3n, 'The result of (-0x3n / 0x1n) is -0x3n');
assert.sameValue(-0x3n / -0x1n, 0x3n, 'The result of (-0x3n / -0x1n) is 0x3n');
assert.sameValue(-0x3n / -0x2n, 0x1n, 'The result of (-0x3n / -0x2n) is 0x1n');
assert.sameValue(-0x3n / -0x3n, 0x1n, 'The result of (-0x3n / -0x3n) is 0x1n');
assert.sameValue(-0x3n / -0x1234n, 0x0n, 'The result of (-0x3n / -0x1234n) is 0x0n');
assert.sameValue(-0x3n / -0xFEDCBA97n, 0x0n, 'The result of (-0x3n / -0xFEDCBA97n) is 0x0n');
assert.sameValue(-0x3n / -0xFEDCBA98n, 0x0n, 'The result of (-0x3n / -0xFEDCBA98n) is 0x0n');

assert.sameValue(
  -0x3n / -0xFEDCBA987654320Fn,
  0x0n,
  'The result of (-0x3n / -0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(
  -0x3n / -0xFEDCBA9876543210n,
  0x0n,
  'The result of (-0x3n / -0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  -0x1234n / 0xFEDCBA9876543210n,
  0x0n,
  'The result of (-0x1234n / 0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  -0x1234n / 0xFEDCBA987654320Fn,
  0x0n,
  'The result of (-0x1234n / 0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(-0x1234n / 0xFEDCBA98n, 0x0n, 'The result of (-0x1234n / 0xFEDCBA98n) is 0x0n');
assert.sameValue(-0x1234n / 0xFEDCBA97n, 0x0n, 'The result of (-0x1234n / 0xFEDCBA97n) is 0x0n');
assert.sameValue(-0x1234n / 0x1234n, -0x1n, 'The result of (-0x1234n / 0x1234n) is -0x1n');
assert.sameValue(-0x1234n / 0x3n, -0x611n, 'The result of (-0x1234n / 0x3n) is -0x611n');
assert.sameValue(-0x1234n / 0x2n, -0x91An, 'The result of (-0x1234n / 0x2n) is -0x91An');
assert.sameValue(-0x1234n / 0x1n, -0x1234n, 'The result of (-0x1234n / 0x1n) is -0x1234n');
assert.sameValue(-0x1234n / -0x1n, 0x1234n, 'The result of (-0x1234n / -0x1n) is 0x1234n');
assert.sameValue(-0x1234n / -0x2n, 0x91An, 'The result of (-0x1234n / -0x2n) is 0x91An');
assert.sameValue(-0x1234n / -0x3n, 0x611n, 'The result of (-0x1234n / -0x3n) is 0x611n');
assert.sameValue(-0x1234n / -0x1234n, 0x1n, 'The result of (-0x1234n / -0x1234n) is 0x1n');
assert.sameValue(-0x1234n / -0xFEDCBA97n, 0x0n, 'The result of (-0x1234n / -0xFEDCBA97n) is 0x0n');
assert.sameValue(-0x1234n / -0xFEDCBA98n, 0x0n, 'The result of (-0x1234n / -0xFEDCBA98n) is 0x0n');

assert.sameValue(
  -0x1234n / -0xFEDCBA987654320Fn,
  0x0n,
  'The result of (-0x1234n / -0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(
  -0x1234n / -0xFEDCBA9876543210n,
  0x0n,
  'The result of (-0x1234n / -0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  -0xFEDCBA97n / 0xFEDCBA9876543210n,
  0x0n,
  'The result of (-0xFEDCBA97n / 0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  -0xFEDCBA97n / 0xFEDCBA987654320Fn,
  0x0n,
  'The result of (-0xFEDCBA97n / 0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(
  -0xFEDCBA97n / 0xFEDCBA98n,
  0x0n,
  'The result of (-0xFEDCBA97n / 0xFEDCBA98n) is 0x0n'
);

assert.sameValue(
  -0xFEDCBA97n / 0xFEDCBA97n,
  -0x1n,
  'The result of (-0xFEDCBA97n / 0xFEDCBA97n) is -0x1n'
);

assert.sameValue(
  -0xFEDCBA97n / 0x1234n,
  -0xE0042n,
  'The result of (-0xFEDCBA97n / 0x1234n) is -0xE0042n'
);

assert.sameValue(
  -0xFEDCBA97n / 0x3n,
  -0x54F43E32n,
  'The result of (-0xFEDCBA97n / 0x3n) is -0x54F43E32n'
);

assert.sameValue(
  -0xFEDCBA97n / 0x2n,
  -0x7F6E5D4Bn,
  'The result of (-0xFEDCBA97n / 0x2n) is -0x7F6E5D4Bn'
);

assert.sameValue(
  -0xFEDCBA97n / 0x1n,
  -0xFEDCBA97n,
  'The result of (-0xFEDCBA97n / 0x1n) is -0xFEDCBA97n'
);

assert.sameValue(
  -0xFEDCBA97n / -0x1n,
  0xFEDCBA97n,
  'The result of (-0xFEDCBA97n / -0x1n) is 0xFEDCBA97n'
);

assert.sameValue(
  -0xFEDCBA97n / -0x2n,
  0x7F6E5D4Bn,
  'The result of (-0xFEDCBA97n / -0x2n) is 0x7F6E5D4Bn'
);

assert.sameValue(
  -0xFEDCBA97n / -0x3n,
  0x54F43E32n,
  'The result of (-0xFEDCBA97n / -0x3n) is 0x54F43E32n'
);

assert.sameValue(
  -0xFEDCBA97n / -0x1234n,
  0xE0042n,
  'The result of (-0xFEDCBA97n / -0x1234n) is 0xE0042n'
);

assert.sameValue(
  -0xFEDCBA97n / -0xFEDCBA97n,
  0x1n,
  'The result of (-0xFEDCBA97n / -0xFEDCBA97n) is 0x1n'
);

assert.sameValue(
  -0xFEDCBA97n / -0xFEDCBA98n,
  0x0n,
  'The result of (-0xFEDCBA97n / -0xFEDCBA98n) is 0x0n'
);

assert.sameValue(
  -0xFEDCBA97n / -0xFEDCBA987654320Fn,
  0x0n,
  'The result of (-0xFEDCBA97n / -0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(
  -0xFEDCBA97n / -0xFEDCBA9876543210n,
  0x0n,
  'The result of (-0xFEDCBA97n / -0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  -0xFEDCBA98n / 0xFEDCBA9876543210n,
  0x0n,
  'The result of (-0xFEDCBA98n / 0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  -0xFEDCBA98n / 0xFEDCBA987654320Fn,
  0x0n,
  'The result of (-0xFEDCBA98n / 0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(
  -0xFEDCBA98n / 0xFEDCBA98n,
  -0x1n,
  'The result of (-0xFEDCBA98n / 0xFEDCBA98n) is -0x1n'
);

assert.sameValue(
  -0xFEDCBA98n / 0xFEDCBA97n,
  -0x1n,
  'The result of (-0xFEDCBA98n / 0xFEDCBA97n) is -0x1n'
);

assert.sameValue(
  -0xFEDCBA98n / 0x1234n,
  -0xE0042n,
  'The result of (-0xFEDCBA98n / 0x1234n) is -0xE0042n'
);

assert.sameValue(
  -0xFEDCBA98n / 0x3n,
  -0x54F43E32n,
  'The result of (-0xFEDCBA98n / 0x3n) is -0x54F43E32n'
);

assert.sameValue(
  -0xFEDCBA98n / 0x2n,
  -0x7F6E5D4Cn,
  'The result of (-0xFEDCBA98n / 0x2n) is -0x7F6E5D4Cn'
);

assert.sameValue(
  -0xFEDCBA98n / 0x1n,
  -0xFEDCBA98n,
  'The result of (-0xFEDCBA98n / 0x1n) is -0xFEDCBA98n'
);

assert.sameValue(
  -0xFEDCBA98n / -0x1n,
  0xFEDCBA98n,
  'The result of (-0xFEDCBA98n / -0x1n) is 0xFEDCBA98n'
);

assert.sameValue(
  -0xFEDCBA98n / -0x2n,
  0x7F6E5D4Cn,
  'The result of (-0xFEDCBA98n / -0x2n) is 0x7F6E5D4Cn'
);

assert.sameValue(
  -0xFEDCBA98n / -0x3n,
  0x54F43E32n,
  'The result of (-0xFEDCBA98n / -0x3n) is 0x54F43E32n'
);

assert.sameValue(
  -0xFEDCBA98n / -0x1234n,
  0xE0042n,
  'The result of (-0xFEDCBA98n / -0x1234n) is 0xE0042n'
);

assert.sameValue(
  -0xFEDCBA98n / -0xFEDCBA97n,
  0x1n,
  'The result of (-0xFEDCBA98n / -0xFEDCBA97n) is 0x1n'
);

assert.sameValue(
  -0xFEDCBA98n / -0xFEDCBA98n,
  0x1n,
  'The result of (-0xFEDCBA98n / -0xFEDCBA98n) is 0x1n'
);

assert.sameValue(
  -0xFEDCBA98n / -0xFEDCBA987654320Fn,
  0x0n,
  'The result of (-0xFEDCBA98n / -0xFEDCBA987654320Fn) is 0x0n'
);

assert.sameValue(
  -0xFEDCBA98n / -0xFEDCBA9876543210n,
  0x0n,
  'The result of (-0xFEDCBA98n / -0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  -0xFEDCBA987654320Fn / 0xFEDCBA9876543210n,
  0x0n,
  'The result of (-0xFEDCBA987654320Fn / 0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  -0xFEDCBA987654320Fn / 0xFEDCBA987654320Fn,
  -0x1n,
  'The result of (-0xFEDCBA987654320Fn / 0xFEDCBA987654320Fn) is -0x1n'
);

assert.sameValue(
  -0xFEDCBA987654320Fn / 0xFEDCBA98n,
  -0x100000000n,
  'The result of (-0xFEDCBA987654320Fn / 0xFEDCBA98n) is -0x100000000n'
);

assert.sameValue(
  -0xFEDCBA987654320Fn / 0xFEDCBA97n,
  -0x100000001n,
  'The result of (-0xFEDCBA987654320Fn / 0xFEDCBA97n) is -0x100000001n'
);

assert.sameValue(
  -0xFEDCBA987654320Fn / 0x1234n,
  -0xE0042813BE5DCn,
  'The result of (-0xFEDCBA987654320Fn / 0x1234n) is -0xE0042813BE5DCn'
);

assert.sameValue(
  -0xFEDCBA987654320Fn / 0x3n,
  -0x54F43E32D21C10AFn,
  'The result of (-0xFEDCBA987654320Fn / 0x3n) is -0x54F43E32D21C10AFn'
);

assert.sameValue(
  -0xFEDCBA987654320Fn / 0x2n,
  -0x7F6E5D4C3B2A1907n,
  'The result of (-0xFEDCBA987654320Fn / 0x2n) is -0x7F6E5D4C3B2A1907n'
);

assert.sameValue(
  -0xFEDCBA987654320Fn / 0x1n,
  -0xFEDCBA987654320Fn,
  'The result of (-0xFEDCBA987654320Fn / 0x1n) is -0xFEDCBA987654320Fn'
);

assert.sameValue(
  -0xFEDCBA987654320Fn / -0x1n,
  0xFEDCBA987654320Fn,
  'The result of (-0xFEDCBA987654320Fn / -0x1n) is 0xFEDCBA987654320Fn'
);

assert.sameValue(
  -0xFEDCBA987654320Fn / -0x2n,
  0x7F6E5D4C3B2A1907n,
  'The result of (-0xFEDCBA987654320Fn / -0x2n) is 0x7F6E5D4C3B2A1907n'
);

assert.sameValue(
  -0xFEDCBA987654320Fn / -0x3n,
  0x54F43E32D21C10AFn,
  'The result of (-0xFEDCBA987654320Fn / -0x3n) is 0x54F43E32D21C10AFn'
);

assert.sameValue(
  -0xFEDCBA987654320Fn / -0x1234n,
  0xE0042813BE5DCn,
  'The result of (-0xFEDCBA987654320Fn / -0x1234n) is 0xE0042813BE5DCn'
);

assert.sameValue(
  -0xFEDCBA987654320Fn / -0xFEDCBA97n,
  0x100000001n,
  'The result of (-0xFEDCBA987654320Fn / -0xFEDCBA97n) is 0x100000001n'
);

assert.sameValue(
  -0xFEDCBA987654320Fn / -0xFEDCBA98n,
  0x100000000n,
  'The result of (-0xFEDCBA987654320Fn / -0xFEDCBA98n) is 0x100000000n'
);

assert.sameValue(
  -0xFEDCBA987654320Fn / -0xFEDCBA987654320Fn,
  0x1n,
  'The result of (-0xFEDCBA987654320Fn / -0xFEDCBA987654320Fn) is 0x1n'
);

assert.sameValue(
  -0xFEDCBA987654320Fn / -0xFEDCBA9876543210n,
  0x0n,
  'The result of (-0xFEDCBA987654320Fn / -0xFEDCBA9876543210n) is 0x0n'
);

assert.sameValue(
  -0xFEDCBA9876543210n / 0xFEDCBA9876543210n,
  -0x1n,
  'The result of (-0xFEDCBA9876543210n / 0xFEDCBA9876543210n) is -0x1n'
);

assert.sameValue(
  -0xFEDCBA9876543210n / 0xFEDCBA987654320Fn,
  -0x1n,
  'The result of (-0xFEDCBA9876543210n / 0xFEDCBA987654320Fn) is -0x1n'
);

assert.sameValue(
  -0xFEDCBA9876543210n / 0xFEDCBA98n,
  -0x100000000n,
  'The result of (-0xFEDCBA9876543210n / 0xFEDCBA98n) is -0x100000000n'
);

assert.sameValue(
  -0xFEDCBA9876543210n / 0xFEDCBA97n,
  -0x100000001n,
  'The result of (-0xFEDCBA9876543210n / 0xFEDCBA97n) is -0x100000001n'
);

assert.sameValue(
  -0xFEDCBA9876543210n / 0x1234n,
  -0xE0042813BE5DCn,
  'The result of (-0xFEDCBA9876543210n / 0x1234n) is -0xE0042813BE5DCn'
);

assert.sameValue(
  -0xFEDCBA9876543210n / 0x3n,
  -0x54F43E32D21C10B0n,
  'The result of (-0xFEDCBA9876543210n / 0x3n) is -0x54F43E32D21C10B0n'
);

assert.sameValue(
  -0xFEDCBA9876543210n / 0x2n,
  -0x7F6E5D4C3B2A1908n,
  'The result of (-0xFEDCBA9876543210n / 0x2n) is -0x7F6E5D4C3B2A1908n'
);

assert.sameValue(
  -0xFEDCBA9876543210n / 0x1n,
  -0xFEDCBA9876543210n,
  'The result of (-0xFEDCBA9876543210n / 0x1n) is -0xFEDCBA9876543210n'
);

assert.sameValue(
  -0xFEDCBA9876543210n / -0x1n,
  0xFEDCBA9876543210n,
  'The result of (-0xFEDCBA9876543210n / -0x1n) is 0xFEDCBA9876543210n'
);

assert.sameValue(
  -0xFEDCBA9876543210n / -0x2n,
  0x7F6E5D4C3B2A1908n,
  'The result of (-0xFEDCBA9876543210n / -0x2n) is 0x7F6E5D4C3B2A1908n'
);

assert.sameValue(
  -0xFEDCBA9876543210n / -0x3n,
  0x54F43E32D21C10B0n,
  'The result of (-0xFEDCBA9876543210n / -0x3n) is 0x54F43E32D21C10B0n'
);

assert.sameValue(
  -0xFEDCBA9876543210n / -0x1234n,
  0xE0042813BE5DCn,
  'The result of (-0xFEDCBA9876543210n / -0x1234n) is 0xE0042813BE5DCn'
);

assert.sameValue(
  -0xFEDCBA9876543210n / -0xFEDCBA97n,
  0x100000001n,
  'The result of (-0xFEDCBA9876543210n / -0xFEDCBA97n) is 0x100000001n'
);

assert.sameValue(
  -0xFEDCBA9876543210n / -0xFEDCBA98n,
  0x100000000n,
  'The result of (-0xFEDCBA9876543210n / -0xFEDCBA98n) is 0x100000000n'
);

assert.sameValue(
  -0xFEDCBA9876543210n / -0xFEDCBA987654320Fn,
  0x1n,
  'The result of (-0xFEDCBA9876543210n / -0xFEDCBA987654320Fn) is 0x1n'
);

assert.sameValue(
  -0xFEDCBA9876543210n / -0xFEDCBA9876543210n,
  0x1n,
  'The result of (-0xFEDCBA9876543210n / -0xFEDCBA9876543210n) is 0x1n'
);
